<?xml version="1.0" encoding="utf-8"?>
<!--
                                                                                     
 h       t     t                ::       /     /                     t             / 
 h       t     t                ::      //    //                     t            // 
 h     ttttt ttttt ppppp sssss         //    //  y   y       sssss ttttt         //  
 hhhh    t     t   p   p s            //    //   y   y       s       t          //   
 h  hh   t     t   ppppp sssss       //    //    yyyyy       sssss   t         //    
 h   h   t     t   p         s  ::   /     /         y  ..       s   t    ..   /     
 h   h   t     t   p     sssss  ::   /     /     yyyyy  ..   sssss   t    ..   /     
                                                                                     
	<https://y.st./>
	Copyright © 2017 Alex Yst <mailto:copyright@y.st>

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program. If not, see <https://www.gnu.org./licenses/>.
-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<base href="https://y.st./en/coursework/CS1102/payrollsystem.xhtml" />
		<title>package payrollsystem; &lt;https://y.st./en/coursework/CS1102/payrollsystem.xhtml&gt;</title>
		<link rel="icon" type="image/png" href="/link/CC_BY-SA_4.0/y.st./icon.png" />
		<link rel="stylesheet" type="text/css" href="/link/basic.css" />
		<link rel="stylesheet" type="text/css" href="/link/site-specific.css" />
		<script type="text/javascript" src="/script/javascript.js" />
		<meta name="viewport" content="width=device-width" />
	</head>
	<body>
		<nav>
			<p>
				<a href="/en/">Home</a> |
				<a href="/en/a/about.xhtml">About</a> |
				<a href="/en/a/contact.xhtml">Contact</a> |
				<a href="/a/canary.txt">Canary</a> |
				<a href="/en/URI_research/"><abbr title="Uniform Resource Identifier">URI</abbr> research</a> |
				<a href="/en/opinion/">Opinions</a> |
				<a href="/en/coursework/">Coursework</a> |
				<a href="/en/law/">Law</a> |
				<a href="/en/a/links.xhtml">Links</a> |
				<a href="/en/coursework/CS1102/payrollsystem.xhtml.asc">{this page}.asc</a>
			</p>
			<hr/>
			<p>
				<a href="/en/coursework/BUS1101/" title="Principles of Business Management">BUS 1101</a> |
				<span class="hyperlink_unavailable" title="Basic Accounting">BUS 1102</span> |
				<span class="hyperlink_unavailable" title="Principles of Marketing">BUS 2201</span> |
				<span class="hyperlink_unavailable" title="Multinational Management">BUS 2207</span> |
				<span class="hyperlink_unavailable" title="Business and Society">BUS 3306</span> |
				<a href="/en/coursework/CS1101/" title="Programming Fundamentals">CS 1101</a> |
				<a href="/en/coursework/CS1102/" title="Programming 1">CS 1102</a> |
				<a href="/en/coursework/CS1103/" title="Programming 2">CS 1103</a> |
				<span class="hyperlink_unavailable" title="Computer Systems">CS 1104</span> |
				<a href="/en/coursework/CS2203/" title="Databases 1">CS 2203</a> |
				<span class="hyperlink_unavailable" title="Communications and Networking">CS 2204</span> |
				<a href="/en/coursework/CS2205/" title="Web Programming 1">CS 2205</a> |
				<a href="/en/coursework/CS2301/" title="Operating Systems 1">CS 2301</a> |
				<span class="hyperlink_unavailable" title="Software Engineering 1">CS 2401</span> |
				<span class="hyperlink_unavailable" title="Data Structures">CS 3303</span> |
				<span class="hyperlink_unavailable" title="Analysis of Algorithms">CS 3304</span> |
				<span class="hyperlink_unavailable" title="Web Programming 2">CS 3305</span> |
				<span class="hyperlink_unavailable" title="Databases 2">CS 3306</span> |
				<span class="hyperlink_unavailable" title="Operating Systems 2">CS 3307</span> |
				<span class="hyperlink_unavailable" title="Information Retrieval">CS 3308</span> |
				<span class="hyperlink_unavailable" title="Comparative Programming Languages">CS 4402</span> |
				<span class="hyperlink_unavailable" title="Software Engineering 2">CS 4403</span> |
				<span class="hyperlink_unavailable" title="Advanced Networking and Data Security">CS 4404</span> |
				<span class="hyperlink_unavailable" title="Mobile Applications">CS 4405</span> |
				<span class="hyperlink_unavailable" title="Computer Graphics">CS 4406</span> |
				<span class="hyperlink_unavailable" title="Data Mining and Machine Learning">CS 4407</span> |
				<span class="hyperlink_unavailable" title="Artificial Intelligence">CS 4408</span> |
				<span class="hyperlink_unavailable" title="English Composition 2">ENGL 1102</span> |
				<span class="hyperlink_unavailable" title="World Literature">ENGL 1405</span> |
				<span class="hyperlink_unavailable" title="Introduction to Environmental Science">ENVS 1301</span> |
				<a href="/en/coursework/HIST1421/" title="Greek and Roman Civilization">HIST 1421</a> |
				<span class="hyperlink_unavailable" title="College Algebra">MATH 1201</span> |
				<span class="hyperlink_unavailable" title="Calculus">MATH 1211</span> |
				<span class="hyperlink_unavailable" title="Introduction to Statistics">MATH 1280</span> |
				<span class="hyperlink_unavailable" title="Discrete Mathematics">MATH 1302</span> |
				<span class="hyperlink_unavailable" title="Introduction to Philosophy">PHIL 1402</span> |
				<a href="/en/coursework/PHIL1404/" title="Ethics and Social Responsibility">PHIL 1404</a> |
				<a href="/en/coursework/POLS1503/" title="Globalization">POLS 1503</a> |
				<span class="hyperlink_unavailable" title="Introduction to Psychology">PSYC 1504</span> |
				<a href="/en/coursework/UNIV1001/" title="Online Education Strategies">UNIV 1001</a>
			</p>
			<hr/>
			<p>
				<a href="/en/coursework/CS1102/GravityCalculator.java.xhtml" title="GravityCalculator.java">Unit 1</a> |
				<a href="/en/coursework/CS1102/SnakeEyesCount.java.xhtml" title="SnakeEyesCount.java">Unit 2</a> |
				<a href="/en/coursework/CS1102/Unit3.java.xhtml" title="Unit3.java">Unit 3</a> |
				<a href="/en/coursework/CS1102/firstsubroutines.java.xhtml" title="firstsubroutines.java">Unit 4</a> |
				<a href="/en/coursework/CS1102/Unit5.java.xhtml" title="Unit5.java">Unit 5</a> |
				<a href="/en/coursework/CS1102/payrollsystem.xhtml" title="package payrollsystem;">Unit 7</a> |
				<a href="/en/coursework/CS1102/matchbox.xhtml" title="package matchbox;">Unit 6</a> |
				<a href="/en/coursework/CS1102/Unit7.java.xhtml" title="Unit7.java">Unit 7</a>
			</p>
			<hr/>
		</nav>
		<header>
			<h1><code>package payrollsystem;</code></h1>
			<p>Written in <span title="Programming 1">CS 1102</span> of <a href="http://www.uopeople.edu/">University of the People</a>, finalised on <del>2017-05-10</del> <del><ins>2017-05-17</ins></del> <ins>2017-05-24</ins></p>
		</header>
<h2>Employee.java</h2>
<blockquote>
<pre><code>/*
 * Copyright (C) 2017 Alex Yst
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.
 */
package payrollsystem;

/**
 * An abstract class for representing employee pay information
 * 
 * @author Alex Yst
 */
public abstract class Employee {
	private int empID;
	private String name;
	private Vehicle vehicle;
/**
 * @return the empID
 */
	public int getEmpID() {
		return empID;
	}
/**
 * @param empID the empID to set
 */
	public void setEmpID(int empID) {
		this.empID = empID;
	}
/**
 * @return the name
 */
	public String getName() {
		return name;
	}
/**
 * @param name the name to set
 */
	public void setName(String name) {
		this.name = name;
	}
/**
 * @return the vehicle
 */
	public Vehicle getVehicle() {
		return vehicle;
	}
/**
 * @param vehicle the vehicle to set
 */
	public void setVehicle(Vehicle vehicle) {
		this.vehicle = vehicle;
	}
/**
 * A bare constructor method. Not used by the program.
 */
	public Employee() {
		this.empID = 0;
		this.name = &quot;&quot;;
	}
/**
 * Constructor method. This is the only one of the three constructor methods
 * actually used by the program.
 * 
 * @param pEmpID The employee&apos;s ID number
 * @param pName The employee&apos;s name
 * @param pV An object representing the employee&apos;s vehicle, if any
 */
	public Employee(int pEmpID, String pName, Vehicle pV) {
		this.empID = pEmpID;
		this.name = pName;
		this.vehicle = pV;
	}
/**
 * The most comprehensive constructor method of this class. Not used by the
 * program
 * 
 * @param pEmpID The ID number of the employee
 * @param pName The name of the employee
 * @param pPlate The registration plate number of the employee&apos;s vehicle
 * @param pColour The colour of the employee&apos;s vehicle
 */
	public Employee(int pEmpID, String pName, String pPlate, String pColour) {
		this.empID = pEmpID;
		this.name = pName;
		this.vehicle = new Vehicle(pPlate, pColour);
	}
/**
 * The rules for determining an employee&apos;s pay are determined by what type of
 * employee they are. This method must be defined in child classes.
 * 
 * @return The calculated pay
 */
	public abstract double calculatePay();
}</code></pre>
</blockquote>
<h2>FullTime.java</h2>
<blockquote>
<pre><code>/*
 * Copyright (C) 2017 Alex Yst
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.
 */
package payrollsystem;

/**
 * A class for representing full-time employees
 * 
 * @author Alex Yst
 */
public class FullTime extends Employee {
	private double salary;
	private double overtime;
/**
 * Calculates the ammount that sould be paid to the employee
 * 
 * @return The ammout of pay due to the employee
 */
@Override
	public double calculatePay() {
		System.out.println(&quot;Full time employee.&quot;);
		return this.getSalary() + this.getOvertime();
	}
/**
 * @return the salary
 */
	public double getSalary() {
		return salary;
	}
/**
 * @param salary the salary to set
 */
	public void setSalary(double salary) {
		this.salary = salary;
	}
/**
 * @return the overtime
 */
	public double getOvertime() {
		return overtime;
	}
/**
 * @param overtime the overtime to set
 */
	public void setOvertime(double overtime) {
		this.overtime = overtime;
	}
/**
 * Constructor method
 * 
 * @param id The ID number of the employee
 * @param name The name of the employee
 * @param sal The salary of the employee
 * @param hourAndHalf unclear - might be overtime pay or might be employee bonus
 * @param vehicle an object representing the employee&apos;s vehicle, if any
 */
	public FullTime(int id, String name, double sal, double hourAndHalf, Vehicle vehicle) {
		super(id, name, vehicle);
		this.overtime = hourAndHalf;
		this.salary = sal;
	}
}</code></pre>
</blockquote>
<h2>PartTime.java</h2>
<blockquote>
<pre><code>/*
 * Copyright (C) 2017 Alex Yst
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.
 */
package payrollsystem;

/**
 * A class for representing part-time employees
 * 
 * @author Alex Yst
 */
public class PartTime extends Employee {
	private double rate;
	private double hoursWorked;
/**
 * Calculates the ammount that sould be paid to the employee
 * 
 * @return The ammout of pay due to the employee
 */
	@Override
	public double calculatePay() {
		System.out.println(&quot;Part time employee.&quot;);
		return this.getHoursWorked() * this.getRate();
	}
/**
 * @return the rate
 */
	public double getRate() {
		return rate;
	}
/**
 * @param rate the rate to set
 */
	public void setRate(double rate) {
		this.rate = rate;
	}
/**
 * @return the hoursWorked
 */
	public double getHoursWorked() {
		return hoursWorked;
	}
/**
 * @param hoursWorked the hoursWorked to set
 */
	public void setHoursWorked(double hoursWorked) {
		this.hoursWorked = hoursWorked;
	}
/**
 * Constructor method
 * 
 * @param id The ID number of the employee
 * @param name The name of the employee
 * @param rate The hourly rate of the employee
 * @param hoursWorked2 The number of hours the employee has worked
 * @param v1 An object representing the vehicle of the employee
 */
	public PartTime(int id, String name, double rate, double hoursWorked2, Vehicle v1) {
		super(id, name, v1);
		this.rate = rate;
		this.hoursWorked = hoursWorked2;
	}
}</code></pre>
</blockquote>
<h2>PayrollSystem.java</h2>
<blockquote>
<pre><code>/*
 * Copyright (C) 2017 Alex Yst
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.
 */
package payrollsystem;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * A simple program for calculating employee pay
 * 
 * This program facilitates the entering of employee pay information, then adds
 * it up to show the total amount paid to employees by the company. Information
 * on employee vehicles can also be entered, but because the program doesn&apos;t
 * store any information in a database and this program doesn&apos;t use the vehicle
 * information in any way besides simply desplaying it with the employee&apos;s pay,
 * entering that information has no significant benefit.
 * 
 * @author Alex Yst
 */
public class PayrollSystem {
/**
 * This method simply runs the main program.
 * 
 * @param arguments Not implemented
 */
	public static void main(String[] arguments) {
		ArrayList&lt;Employee&gt; arrEmp = new ArrayList&lt;&gt;();
		String varCont = &quot;N&quot;;
		byte menuOption;
		do {
			menuOption = showMenu();
			switch(menuOption) {
				case 1:
					addEmployee(arrEmp, readNewFullTime());
					break;
				case 2:
					addEmployee(arrEmp, readNewPartTime());
					break;
				case 3:
					calcPayroll(arrEmp);
					break;
				default:
					break;
			}
		} while(menuOption != 4);
	}
/**
 * This method promps the user for an employee&apos;s information and generates an
 * object based on that information to represent the employee.
 * 
 * @return An object representing the full-time employee
 */
	public static FullTime readNewFullTime() {
		Scanner kbd = new Scanner(System.in);
		System.out.print(&quot;Enter Id: &quot;);
		int id = kbd.nextInt();
		System.out.print(&quot;
Enter Name: &quot;);
		String name = kbd.next();
		System.out.print(&quot;
Enter Salary: &quot;);
		double sal = kbd.nextDouble();
		System.out.print(&quot;
Enter Bonus: &quot;);
		double hourAndHalf = kbd.nextDouble();
		return new FullTime(id, name, sal, hourAndHalf, getVehicle());
	}
/**
 * This method promps the user for an employee&apos;s information and generates an
 * object based on that information to represent the employee.
 * 
 * @return An object representing the part-time employee
 */
	public static PartTime readNewPartTime() {
		Scanner kbd = new Scanner(System.in);
		System.out.print(&quot;Enter Id: &quot;);
		int id = kbd.nextInt();
		System.out.print(&quot;
Enter Name: &quot;);
		String name = kbd.next();
		System.out.print(&quot;
Enter Hourly Rate: &quot;);
		double rate = kbd.nextDouble();
		System.out.print(&quot;
Enter Number of Hours Worked: &quot;);
		double hoursWorked = kbd.nextDouble();
		return new PartTime(id, name, rate, hoursWorked, getVehicle());
	}
/**
 * This one-line method takes an employee list and an employee, and add the
 * employee to the list. On first glance, it doesn&apos;t seem like a useful method,
 * but it actually provides a layer of abstraction. In the future, employee
 * lists or employee representations may be implemented another way. If and
 * when that happens, this method can be updated instead of updating every
 * instance of adding an employee to a dist throught the code.
 * 
 * @param pArrEmp The list of employees
 * @param pEmp The employee to add to the list
 */
	public static void addEmployee(ArrayList&lt;Employee&gt; pArrEmp, Employee pEmp) {
		pArrEmp.add(pEmp);
	}
/**
 * This method shows the user the options and returns their input. Why is our
 * menu indexed from one instead of zero? Are we common fools that don&apos;t
 * understand zero comes before one!?
 * 
 * @return A byte specified by the user
 */
	public static byte showMenu() {
		Scanner kbd = new Scanner(System.in);
		System.out.println(&quot;/* *********************************************************/&quot;);
		System.out.println(&quot;/* 1. Add FullTime                                         */&quot;);
		System.out.println(&quot;/* 2. Add PartTime                                         */&quot;);
		System.out.println(&quot;/* 3. Calculate Payroll                                    */&quot;);
		System.out.println(&quot;/* 4. Exit                                                 */&quot;);
		System.out.println(&quot;/* *********************************************************/&quot;);
		System.out.print(&quot;Input: &quot;);
		return kbd.nextByte();
	}
/**
 * This method displays vehicle information of every employee and, more
 * importantly, calculates every employee&apos;s pay and adds the pay of all
 * employees up to show the total paid out by the company. This should be the
 * final option specified by the user before exiting the program, at least if
 * the user knows what they&apos;re doing.
 * 
 * @param pArrEmp A list of employees
 */
	public static void calcPayroll(ArrayList&lt;Employee&gt; pArrEmp) {
		double totalCompanyPay = 0.0;
		double individualPay;
		for(int i=0; i&lt;pArrEmp.size(); i++) {
			Employee emp = pArrEmp.get(i);
			System.out.println(&quot;
**************************
&quot;);
			individualPay = emp.calculatePay();
			Vehicle v = emp.getVehicle();
			String hasVehicle;
			if(v == null) {
				hasVehicle = &quot;No&quot;;
			} else {
				hasVehicle = &quot;Yes&quot;;
			}
			System.out.print(&quot;Employee Name: &quot;);
			System.out.println(emp.getName());
			System.out.print(&quot;Has Vehicle: &quot;);
			System.out.println(hasVehicle);
			if(v != null) {
				System.out.print(&quot;Plate Number: &quot;);
				System.out.println(v.getPlateNumber());
				System.out.print(&quot;Colour: &quot;);
				System.out.println(v.getColour());
			}
			System.out.print(&quot;Take Home Pay: &quot;);
			System.out.println(individualPay);
			totalCompanyPay += individualPay;
		}
		System.out.print(&quot;------------------
Total paroll of the company: &quot;);
		System.out.println(totalCompanyPay);
		System.out.println(&quot;------------------&quot;);
	}
/**
 * This method promps the user for information regarding the employee&apos;s
 * vehicle. However, this information is actually useless for calculating
 * payrool and isn&apos;t stored in any database. Therefore, each pay period, the
 * vehicle information must be uselessly re-entered. A smart user of this
 * progran will simply type &quot;N&quot; when asked if the employee has a vehicle to
 * avoid having to look up the employee&apos;s registration plate number and vehicle
 * colour.
 * 
 * @return An object representing the employee&apos;s vehicle
 */
	public static Vehicle getVehicle() {
		Scanner kbd = new Scanner(System.in);
		System.out.print(&quot;
Does this employee have a vehicle? Y/N :
Input : &quot;);
		String hasVehicle = kbd.next();
		if(hasVehicle.equalsIgnoreCase(&quot;Y&quot;)) {
			System.out.print(&quot;
Enter plate number: &quot;);
			String auxPlate = kbd.next();
			System.out.print(&quot;
Enter vehicle colour: &quot;);
			String auxColour = kbd.next();
			return new Vehicle(auxPlate, auxColour);
		} else {
			return null;
		}
	}
}</code></pre>
</blockquote>
<h2>Vehicle.java</h2>
<blockquote>
<pre><code>/*
 * Copyright (C) 2017 Alex Yst
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.
 */
package payrollsystem;

/**
 * A class for representing employee vehicles
 * 
 * @author Alex Yst
 */
public class Vehicle {
	private String plateNumber;
	private String colour;
/**
 * Constructor method
 * 
 * @param plateNumber The registration plate number of the vehicle
 * @param colour The colour of the vehicle
 */
	public Vehicle(String plateNumber, String colour) {
		this.plateNumber = plateNumber;
		this.colour = colour;
	}
/**
 * @return the plateNumber
 */
	public String getPlateNumber() {
		return plateNumber;
	}
/**
 * @param plateNumber the plateNumber to set
 */
	public void setPlateNumber(String plateNumber) {
		this.plateNumber = plateNumber;
	}
/**
 * @return the colour
 */
	public String getColour() {
		return colour;
	}
/**
 * @param colour the colour to set
 */
	public void setColour(String colour) {
		this.colour = colour;
	}
}</code></pre>
</blockquote>
		<hr/>
		<p>
			Copyright © 2017 Alex Yst;
			You may modify and/or redistribute this document under the terms of the <a rel="license" href="/license/gpl-3.0-standalone.xhtml"><abbr title="GNU&apos;s Not Unix">GNU</abbr> <abbr title="General Public License version Three or later">GPLv3+</abbr></a>.
			If for some reason you would prefer to modify and/or distribute this document under other free copyleft terms, please ask me via email.
			My address is in the source comments near the top of this document.
			This license also applies to embedded content such as images.
			For more information on that, see <a href="/en/a/licensing.xhtml">licensing</a>.
		</p>
		<p>
			<abbr title="World Wide Web Consortium">W3C</abbr> standards are important.
			This document conforms to the <a href="https://validator.w3.org./nu/?doc=https%3A%2F%2Fy.st.%2Fen%2Fcoursework%2FCS1102%2Fpayrollsystem.xhtml"><abbr title="Extensible Hypertext Markup Language">XHTML</abbr> 5.1</a> specification and uses style sheets that conform to the <a href="http://jigsaw.w3.org./css-validator/validator?uri=https%3A%2F%2Fy.st.%2Fen%2Fcoursework%2FCS1102%2Fpayrollsystem.xhtml"><abbr title="Cascading Style Sheets">CSS</abbr>3</a> specification.
		</p>
	</body>
</html>

